#pragma once

#include<iostream>
#include<string>

#include"Util.hpp"
#include"Time.hpp"

namespace ns_LOG
{
    using namespace ns_Util;
    enum 
    {
        INFO,
        DEBUG,
        WARNING,
        ERROR,
        FATAL
    };
    
    std::ostream& Log(const std::string &level, const std::string &file_name, int line)
    {
        std::string message;

        message = "[" + level + "] ";

        message += "[" + file_name + "]";

        message += "[" + std::to_string(line) + "] ";

        message += "[" + GetCurrTime() + "] ";

        std::cout << message;
        return std::cout;
    }

    #define LOG(level) Log(#level, __FILE__, __LINE__)
}